package com.mxf.code.mapper;

import com.mxf.code.entity.SmbmsRoleUser;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author : [mxf]
 * @version : [v1.0]
 * @className : ManyToMany
 * @description : [一个角色下有多个账号,多个账户有多个账号]
 * @createTime : [2022/10/8 19:29]
 * @updateUser : [mxf]
 * @updateTime : [2022/10/8 19:29]
 * @updateRemark : [描述说明本次修改内容]
 */
@Mapper
public interface ManyToManyDao {
    List<SmbmsRoleUser> getAll();

    /**
     <resultMap id="roleMap" type="role">
     <!-- 注意：使用方式二主表和从表每列和每个属性都必须声明，没有声明的列属性会变为NULL -->
     <id property="id" column="id"></id>
     <result property="rolename" column="rolename"></result>

     <!-- ofType表示从外连接查询的结果列中选择部分列映射成User -->
     <collection property="userList" ofType="com.domain.User">
     <!-- 注意：使用方式二主表和从表每列和每个属性都必须声明，没有声明的列属性会变为NULL -->
     <id property="id" column="uid"></id>
     <result property="username" column="username"></result>
     <result property="age" column="age"></result>
     </collection>
     </resultMap>

     <select id="findAll" resultMap="roleMap">
     <!-- 使用外连接一次性把所有角色及其关联的用户查询出来 -->

     <!-- 推荐方式right join：无论涉及到多少个表的关联，只需在最后那里right join主表即可 -->
     select r.*,u.id as uid,u.username,u.age from user u
     join user_role ur on ur.userid=u.id
     right join role r on r.id=ur.roleid
    */
}
